package com.wicket.okrapp.biz.service.dto.common;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;

import lombok.Data;
import java.util.Objects;

/**
 * @desc IndexViewPointDto
 * @使用场景
 */
@Data
public class IndexViewPointDto extends BaseDto implements Serializable {

  /**
   * 被评对象目标周期ID
   */
  @ApiModelProperty("被评对象目标周期ID")
  private String evaObjTargetCycleId;

  /**
   * 被评对象内容表主键ID
   */
  @ApiModelProperty("被评对象内容表主键ID")
  private String evaObjEntityId;

  /**
   * 被评对象内容表类型编码 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表
   */
  @ApiModelProperty("被评对象内容表类型编码")
  private String evaObjTableTypeCode;

  /**
   * 被评对象类型编码 EVA_PORTRAIT:评价画像 EVA_OBJECT:评价对象 FLEVEL_OBJ_TASK_DUTY_DEPT:一级部门目标任务责任部门 OKR_SUBJECT_DEPT:OKR责任主体部门 OKR_SUBJECT_PERSONAL:OKR责任主体个人
   */
  @ApiModelProperty("被评对象类型编码")
  private String evaObjTypeCode;

  /**
   * 树类型编码 PLAN_TREE:规划树 EVALUATION_TREE:评价树 DEP_OBJ_MIS_STA:部门目标任务书 DUTY_SUBJECT:OKR责任主体树
   */
  @ApiModelProperty("树类型编码")
  private String treeTypeCode;

  /**
   * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
   */
  @ApiModelProperty("关联目标内容类型编码")
  private String targetCycleContentTypeCode;

  /**
   * 关联目标内容ID
   */
  @ApiModelProperty("关联目标内容ID")
  private String targetCycleContentId;

  /**
   * 冗余目标ID
   */
  @ApiModelProperty("冗余目标ID")
  private String targetId;

  /**
   * 冗余评价模板ID
   */
  @ApiModelProperty("冗余评价模板ID")
  private String evaluationTemplateId;

  /**
   * 周期ID
   */
  @ApiModelProperty("周期ID")
  private String cycleId;

  /**
   * 是否中期 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否中期")
  private String isMetaphase;

  /**
   * 周期名称
   */
  @ApiModelProperty("周期名称")
  private String cycleStandardName;

  /**
   * 周期开始时间
   */
  @ApiModelProperty("周期开始时间")
  private Date cycleStartTime;

  /**
   * 周期结束时间
   */
  @ApiModelProperty("周期结束时间")
  private Date cycleEndTime;

  /**
   * 周期类型名称
   */
  @ApiModelProperty("周期类型名称")
  private String cycleTypeName;

  /**
   * 周期类型实例简称
   */
  @ApiModelProperty("周期类型实例简称")
  private String cycleNumberShortName;

  /**
   * 目标周期简称
   */
  @ApiModelProperty("目标周期简称")
  private String cyclelAlias;

  /**
   * 目标周期名称
   */
  @ApiModelProperty("目标周期名称")
  private String targetCycleName;

  /**
   * 目标达成情况
   */
  @ApiModelProperty("目标达成情况")
  private String targetReached;

  /**
   * 目标周期任务进展状态 NOT_AT_THE:未开始 ONGOING:进行中 HAS_ENDED:已结束
   */
  @ApiModelProperty("目标周期任务进展状态")
  private String taskStatus;

  /**
   * 汇报通过时间
   */
  @ApiModelProperty("汇报通过时间")
  private Date reportUpdateTime;

  /**
   * 虚拟组织下部门ID
   */
  @ApiModelProperty("牵头部门ID")
  private String deptId;

  /**
   * 组织内部门身份名称
   */
  @ApiModelProperty("牵头部门身份名称")
  private String virtualOrgDeptStatus;

  /**
   * 个人账号
   */
  @ApiModelProperty("责任人个人账号ID")
  private String userId;

  /**
   * 组内职务名称
   */
  @ApiModelProperty("责任人职务名称")
  private String virtualOrganizationPosition;

  /**
   * 总时长
   */
  @ApiModelProperty("总时长")
  private Long totalLength;

  /**
   * 延后或剩余天数
   */
  @ApiModelProperty("延后或剩余天数")
  private Long delaySurplusLength;

  /**
   * 完成偏离时长
   */
  @ApiModelProperty("完成偏离时长")
  private Long deviateLength;

  /**
   * 诊断值
   */
  @ApiModelProperty("诊断值")
  private Double targetDiagnosticValue;

  /**
   * 实际值
   */
  @ApiModelProperty("实际值")
  private Double actualValue;

  /**
   * 实际值单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
   */
  @ApiModelProperty("实际值单位")
  private String actualValueUnit;

  /**
   * 进度值
   */
  @ApiModelProperty("进度值")
  private Double progressValue;

  /**
   * 进度值单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
   */
  @ApiModelProperty("进度值单位")
  private String progressValueUnit;

  /**
   * 进度较上次增降幅
   */
  @ApiModelProperty("进度较上次增降幅")
  private Double progressFromLastRatio;

  /**
   * 进度较上次增降幅单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
   */
  @ApiModelProperty("进度较上次增降幅单位")
  private String progressFromLastRatioUnit;

  /**
   * 达成度
   */
  @ApiModelProperty("达成度")
  private Double reach;

  /**
   * 达成度单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
   */
  @ApiModelProperty("达成度单位")
  private String reachUnit;

  /**
   * 达成度较上次增降福
   */
  @ApiModelProperty("达成度较上次增降福")
  private Double actualFromLastTimeRatio;

  /**
   * 达成度较上次增降福单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
   */
  @ApiModelProperty("达成度较上次增降福单位")
  private String actualFromLastTimeRatioUnit;

  /**
   * 实时得分
   */
  @ApiModelProperty("实时得分")
  private Double realTimeScore;

  /**
   * 实时得分单位
   */
  @ApiModelProperty("实时得分单位")
  private String realTimeScoreUnit;

  /**
   * 权重分值
   */
  @ApiModelProperty("权重分值")
  private Double weightScore;
/**
     * 虚拟组织成员就职记录ID 
     */
    @ApiModelProperty("责任人就职记录ID")
    private String	 virtualOrgInductionRecordId;
/**
     * 冗余指标业务类型 NUMBER_GROWTH:数量增长型 NUMBER_DECLINE:数量降幅型 PERCENTAGE_GROWTH:百分比增长型 PERCENTAGE_DECLINE:百分比降幅型 PROGRESS:进度型 RATIO_GROWTH:比率增长型 RATIO_DECLINE:比率降幅型 SUBJECTIVE_QUALITATIVE:主观定性
     */
    @ApiModelProperty("冗余指标业务类型")
    private String	 targetValueType;

    /**
     * 冗余是否左侧比例型 TRUE:是 FALSE:否
     */
    @ApiModelProperty("冗余是否左侧比例型")
    private String	 isLeft;
/**
     * 实时得分等级 
     */
    @ApiModelProperty("实时得分等级")
    private String	 realTimeScoreLevel;
/**
     * 周期类型标识 
     */
    @ApiModelProperty("周期类型标识")
    private String	 cycleTypeCode;
/**
     * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
     */
    @ApiModelProperty("周期模式类型编码")
    private String	 periodicModeTypeCode;
/**
     * 较上次目标变化值 
     */
    @ApiModelProperty("较上次目标变化值")
    private Double	 changeFromLastTarget;

    /**
     * 较上次目标变化值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("较上次目标变化值单位")
    private String	 changeFromLastTargetUnit;

    /**
     * 较上次目标增降幅 
     */
    @ApiModelProperty("较上次目标增降幅")
    private Double	 fromLastTargetLiftRatio;

    /**
     * 较上次目标增降幅单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("较上次目标增降幅单位")
    private String	 fromLastTargetLiftRatioUnit;

    /**
     * 进度较上次变化值 
     */
    @ApiModelProperty("进度较上次变化值")
    private Double	 fromLastProgressValue;

    /**
     * 进度较上次变化值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("进度较上次变化值单位")
    private String	 fromLastProgressValueUnit;

    /**
     * 达成度较上次变化值 
     */
    @ApiModelProperty("达成度较上次变化值")
    private Double	 fromLastReach;

    /**
     * 达成度较上次变化值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("达成度较上次变化值单位")
    private String	 fromLastReachUnit;

    /**
     * 汇报得分（数值） 
     */
    @ApiModelProperty("汇报得分（数值）")
    private Double	 reportScoreValue;

    /**
     * 汇报得分单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("汇报得分单位")
    private String	 reportScoreUnit;

    /**
     * 实际得分（数值） 
     */
    @ApiModelProperty("实际得分（数值）")
    private Double	 actualScoreValue;

    /**
     * 实际得分单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("实际得分单位")
    private String	 actualScoreUnit;
/**
     * 是否过程周期阶段 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否过程周期阶段")
    private String	 isProcessCycleStage;
/**
     * 汇报得分（文本） 
     */
    @ApiModelProperty("汇报得分（文本）")
    private String	 reportScore;

    /**
     * 实际得分（文本） 
     */
    @ApiModelProperty("实际得分（文本）")
    private String	 actualScore;
/**
     * 被评对象目标周期标识
     */
    @ApiModelProperty("被评对象目标周期标识")
    private String	 evaObjTargetCycleCode;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date	 operateTime;
/**
     * 展示目标值
     */
    @ApiModelProperty("展示目标值")
    private Double	 showTargetValue;

    /**
     * 冗余单位
     */
    @ApiModelProperty("目标值单位")
    private String	 unit;
/**
     * 目标实际开始时间 
     */
    @ApiModelProperty("目标实际开始时间")
    private Date	 targetActualStartTime;

    /**
     * 目标实际结束时间 
     */
    @ApiModelProperty("目标实际结束时间")
    private Date	 targetActualEndtTime;
/**
     * 相对上级排序 
     */
    @ApiModelProperty("相对上级排序")
    private Long	 relativeOrderNumber;

    /**
     * 部门排序 
     */
    @ApiModelProperty("部门排序")
    private Long	 dutyBodyOrderNum;

    /**
     * 个人排序 
     */
    @ApiModelProperty("个人排序")
    private Long	 personalOrderNumber;

    /**
     * 权重排序 
     */
    @ApiModelProperty("权重排序")
    private Long	 weightOrderNumber;

    /**
     * 创建时间 
     */
    @ApiModelProperty("创建时间")
    private Date	 createTime;
@Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      if (!super.equals(o)) return false;
      IndexViewPointDto that = (IndexViewPointDto) o;
      return  evaObjTargetCycleId == that.evaObjTargetCycleId&&evaObjEntityId == that.evaObjEntityId&&evaObjTableTypeCode == that.evaObjTableTypeCode&&evaObjTypeCode == that.evaObjTypeCode&&treeTypeCode == that.treeTypeCode&&targetCycleContentTypeCode == that.targetCycleContentTypeCode&&targetCycleContentId == that.targetCycleContentId&&targetId == that.targetId&&evaluationTemplateId == that.evaluationTemplateId&&cycleId == that.cycleId&&isMetaphase == that.isMetaphase&&cycleStandardName == that.cycleStandardName&&cycleStartTime == that.cycleStartTime&&cycleEndTime == that.cycleEndTime&&cycleTypeName == that.cycleTypeName&&cycleNumberShortName == that.cycleNumberShortName&&cyclelAlias == that.cyclelAlias&&targetCycleName == that.targetCycleName&&targetReached == that.targetReached&&taskStatus == that.taskStatus&&reportUpdateTime == that.reportUpdateTime&&deptId == that.deptId&&virtualOrgDeptStatus == that.virtualOrgDeptStatus&&userId == that.userId&&virtualOrganizationPosition == that.virtualOrganizationPosition&&totalLength == that.totalLength&&delaySurplusLength == that.delaySurplusLength&&deviateLength == that.deviateLength&&targetDiagnosticValue == that.targetDiagnosticValue&&actualValue == that.actualValue&&actualValueUnit == that.actualValueUnit&&progressValue == that.progressValue&&progressValueUnit == that.progressValueUnit&&progressFromLastRatio == that.progressFromLastRatio&&progressFromLastRatioUnit == that.progressFromLastRatioUnit&&reach == that.reach&&reachUnit == that.reachUnit&&actualFromLastTimeRatio == that.actualFromLastTimeRatio&&actualFromLastTimeRatioUnit == that.actualFromLastTimeRatioUnit&&realTimeScore == that.realTimeScore&&realTimeScoreUnit == that.realTimeScoreUnit&&weightScore == that.weightScore&&virtualOrgInductionRecordId == that.virtualOrgInductionRecordId&&targetValueType == that.targetValueType&&isLeft == that.isLeft&&realTimeScoreLevel == that.realTimeScoreLevel&&cycleTypeCode == that.cycleTypeCode&&periodicModeTypeCode == that.periodicModeTypeCode&&changeFromLastTarget == that.changeFromLastTarget&&changeFromLastTargetUnit == that.changeFromLastTargetUnit&&fromLastTargetLiftRatio == that.fromLastTargetLiftRatio&&fromLastTargetLiftRatioUnit == that.fromLastTargetLiftRatioUnit&&fromLastProgressValue == that.fromLastProgressValue&&fromLastProgressValueUnit == that.fromLastProgressValueUnit&&fromLastReach == that.fromLastReach&&fromLastReachUnit == that.fromLastReachUnit&&reportScoreValue == that.reportScoreValue&&reportScoreUnit == that.reportScoreUnit&&actualScoreValue == that.actualScoreValue&&actualScoreUnit == that.actualScoreUnit&&isProcessCycleStage == that.isProcessCycleStage&&reportScore == that.reportScore&&actualScore == that.actualScore&&evaObjTargetCycleCode == that.evaObjTargetCycleCode&&operateTime == that.operateTime&&showTargetValue == that.showTargetValue&&unit == that.unit&&targetActualStartTime == that.targetActualStartTime&&targetActualEndtTime == that.targetActualEndtTime&&relativeOrderNumber == that.relativeOrderNumber&&dutyBodyOrderNum == that.dutyBodyOrderNum&&personalOrderNumber == that.personalOrderNumber&&weightOrderNumber == that.weightOrderNumber&&createTime == that.createTime;
    }
@Override
  public int hashCode() {
      return Objects.hash(super.hashCode(), evaObjTargetCycleId,evaObjEntityId,evaObjTableTypeCode,evaObjTypeCode,treeTypeCode,targetCycleContentTypeCode,targetCycleContentId,targetId,evaluationTemplateId,cycleId,isMetaphase,cycleStandardName,cycleStartTime,cycleEndTime,cycleTypeName,cycleNumberShortName,cyclelAlias,targetCycleName,targetReached,taskStatus,reportUpdateTime,deptId,virtualOrgDeptStatus,userId,virtualOrganizationPosition,totalLength,delaySurplusLength,deviateLength,targetDiagnosticValue,actualValue,actualValueUnit,progressValue,progressValueUnit,progressFromLastRatio,progressFromLastRatioUnit,reach,reachUnit,actualFromLastTimeRatio,actualFromLastTimeRatioUnit,realTimeScore,realTimeScoreUnit,weightScore,virtualOrgInductionRecordId,targetValueType,isLeft,realTimeScoreLevel,cycleTypeCode,periodicModeTypeCode,changeFromLastTarget,changeFromLastTargetUnit,fromLastTargetLiftRatio,fromLastTargetLiftRatioUnit,fromLastProgressValue,fromLastProgressValueUnit,fromLastReach,fromLastReachUnit,reportScoreValue,reportScoreUnit,actualScoreValue,actualScoreUnit,isProcessCycleStage,reportScore,actualScore,evaObjTargetCycleCode,operateTime,showTargetValue,unit,targetActualStartTime,targetActualEndtTime,relativeOrderNumber,dutyBodyOrderNum,personalOrderNumber,weightOrderNumber,createTime);
    }

}
